<?php

namespace App\Http\Controllers\Home;

use App\Http\Model\Vip_user;
use Illuminate\Http\Request;

use App\Http\Controllers\Controller;
use App\Http\Requests;
use Illuminate\Support\Facades\Crypt;
use Mail;

use App\SMS\M3Result;
use App\SMS\SendTemplateSMS;

class RegisterController extends Controller
{
    
    //手机注册页面
    public function mobile()
    {
        return view('home.sms');
    }

    //    发送手机验证码
    public function sendCode(Request $request)
    {

        $phone = $request['phone'];
        $m3result = new M3Result();
        $sendTempeSms = new SendTemplateSMS();
//        发送手机验证码的方法需要三个参数
//        参数1 要发送的手机号
//        参数2 短信模板中需要替换的变量，是个两个元素的数组，元素1是随机的验证码，元素是时间，单位是分
        //    参数3 短信的模板号，如果是测试账号，只有模板一可用
        $code = rand(0000,9999);
        $m3result = $sendTempeSms->sendTemplateSMS($phone,array($code,5),1);
        return $m3result->toJson();
    }

    
    public function doadd(Request $request)
    {
       
        $list = Vip_user::pluck('phone');
        $list=$list->toArray();
        $input = $request->except('_token','conpass','code');

        //判断手机号码是否已注册
        if(!in_array($input['phone'],$list)){
            //给密码加密
            $input['password'] = Crypt::encrypt($input['password']);
            //用户名赋值
            $input['name'] = $input['phone'];

            //token
            $input['user_token'] = $input['password'];
            $input['created_at'] = date('Y-m-d h:i:s',time());

            $user = Vip_user::create($input);
            
            if($user){
                 return redirect('/login');
            }else{
                //如果用户注册失败，返回
                return back();
            }
        }else{
            return back()->with("error","手机号码已存在");
        }    
    }


    // 返回注册页面
    public function register()
    {
        return view('home.register');
    }
    //处理注册逻辑
    public function doregister(Request $request)
    {
        //获取数据库中的email列，并转成数组
        $list = Vip_user::pluck('email');
        $list=$list->toArray();

        $input = $request->except('_token','conpass');

        //判断邮箱是否已注册
        if(!in_array($input['email'],$list)){
            //给密码加密
            $input['password'] = Crypt::encrypt($input['password']);
            //用户名赋值
            $input['name'] = $input['email'];

            //token
            $input['user_token'] = $input['password'];
            $input['created_at'] = date('Y-m-d h:i:s',time());

                $user = Vip_user::create($input);
            
            if($user){
                //如果用户注册成功，返回激活邮件
                //参数1 邮件发送模板   参数2 向模板中传递的变量   参数3  的参数$user,设置跟邮件相关的信息如收件人、邮件主题等
                Mail::send('home.active', ['user' => $user], function ($m) use ($user) {

                //to(收件人的邮箱，收件人的名字)

                    $m->to($user->email, $user->name)->subject('激活blog系统账号!');
                    
                });

            }else{
                //如果用户注册失败，返回
                return back();
            }
        }else{
            return back()->with("error","邮箱已存在");
        }
    }
    
    public function active(Request $request)
    {
//        dd($request->all());
//        请求中会携带两个参数 通过 参数1 id 可以获取当前要激活的用户记录，通过参数2 token 可以判断当前激活邮件是否有效
      $user =   Vip_user::find($request['id']);
      if($user->user_token  == $request['token']){
//           如果验证成功，将用户的激活状态改为1
           $re =  $user->update(['status'=>1]);
           if($re){
               return redirect('/login');
           }else{
               return '激活失败，请再次检查激活邮件';
           }
      }else{
          return '非法请求';
      }
    }

 /*   
    //找回密码界面
    public function forget()
    {
        return view('home.forget');
    }


//    发送密码找回邮件
    public function doforget(Request $request)
    {
//       一系列的验证，表示这个用户是有效用户

//        如果是是有效邮箱，发送找回密码邮件
        $user = Vip_user::where('email',$request->email)->first();
        if($user){
            Mail::send('email.forget', ['user' => $user], function ($m) use ($user) {

//                to(收件人的邮箱，收件人的名字)

                $m->to($user->email, $user->name)->subject('找回密码!');
            });
        }else{
            echo "无效邮箱";
        }

    }

    //重置密码界面
    public function reset(Request $request)
    {
//        根据id 获取要重置密码的用户
        $user = Vip_user::find($request->input('id'));
//        dd($user);
//        重置密码页面
        return view('admin.register.reset',compact('user'));
    }

    //重置密码界面
    public function doreset(Request $request)
    {
//        dd($request->all());
        $input = $request->except('_token','user_repass');
        $user = Vip_user::find($input['id']);
        $user_pass = Crypt::encrypt($input['password']);
        $re =  $user->update(['password'=>$user_pass]);
        if($re){
            return redirect('/admin/login');
        }else{
            echo "修改失败";
        }
    }
    
    */

}

